#ifndef MENU_STATE_H
#define MENU_STATE_H

// standard libraries
#include <string>
#include <vector>

// custom libraries
#include "..\..\include\game_state\game_state.h"
#include "..\..\include\graphics\graphics_renderer.h"
#include "..\..\include\graphics\font.h"
#include "..\..\include\graphics\image.h"
#include "..\..\include\game_manager.h"
#include "..\..\include\user_controller.h"


class MenuState : public GameState
{
  public:
	static MenuState* Instance();

	void onOpen();
	void onClose();

	void onEnter();
	void onExit();

	void update(GameManager*, UserController*);
	void render(GraphicsRenderer*);

  protected:
	MenuState();
	MenuState(const MenuState&);
	~MenuState();
	MenuState& operator=(const MenuState&);

  private:
	int timesOpened_;

	Image* backgroundImage_;
	Font* textFont_;

	std::vector<std::string> gameOptions_;
	int currentSelection_;
};

#endif // MENU_STATE_H
